/**
 * 通过JSON转码后再解析还原的方式形成obj的副本
 * @param {object} obj 待深拷贝的对象
 * @returns 深拷贝形成的副本
 */
function deepCopyByJson(obj) {
    return JSON.parse(JSON.stringify(obj));
}

/**
 * 对obj执行深拷贝得到副本
 * @param {obect} obj 要深拷贝的对象
 * @returns 深拷贝后的副本
 */
function deepCopyRecursively(obj) {
    var copy = {};
    for (var key in obj) {
        // 基本数据类型的属性 直接往copy身上挂（值拷贝）
        if (typeof obj[key] !== "object") {
            copy[key] = obj[key];
        }

        // 引用数据类型 递归得到深拷贝的副本 再往copy身上挂
        else {
            copy[key] = deepCopyRecursively(obj[key]);
        }
    }
    return copy;
}
